<!DOCTYPE html>
<script src="../../resources/run-after-layout-and-paint.js"></script>
<script>
if (window.testRunner) {
  testRunner.dumpAsText();
  window.onload = function() {
    runAfterLayoutAndPaint(mutateTree, true);
  };
}
function mutateTree() {
  // Add a reference from the rect in pattern#p3 to form a cycle.
  document.getElementsByTagName('rect')[1].setAttribute('fill', 'url(#p1)');
}
</script>
<p>PASS if no crash (stack overflow).</p>
<svg width="100" height="100">
  <rect width="100" height="100" fill="url(#p1)"/>
  <pattern id="p3" width="1" height="1">
    <rect width="100" height="100"/>
  </pattern>
  <pattern id="p2" width="1" height="1">
    <rect fill="url(#p3)" width="100" height="100"/>
  </pattern>
  <pattern id="p1" width="1" height="1">
    <rect fill="url(#p2)" width="100" height="100"/>
  </pattern>
</svg>
